package com.yiren.dbaa.module.practice_set.site.contract;

import com.yiren.backstage.currency.entity.SiteEntity;
import com.yiren.dbaa.currency.api.CommonCallBack;
import com.yiren.dbaa.module.practice_set.site.bean.BaseRuleNewBean;

import java.util.List;

/**
 * @author lwb
 * @date : 2022/9/20 14:40
 * @description: 考场规则契约
 */
public interface SiteRuleContract {


    interface Presenter {
        /**
         * 加载考场规则首页列表
         */
        void loadSiteRuleList(View view);

        /**
         * 下载考规数据
         *
         * @param siteEntity
         */
        void downLoadSiteRuleData(SiteEntity siteEntity, View view);

        /**
         * 教练更新考规数据
         *
         * @param site
         * @param view
         */
        void updateSiteRule(SiteEntity site, View view);

        /**
         * 删除考场规则数据
         *
         * @param site
         * @param callBack
         */
        void deleteSiteRule(SiteEntity site, CommonCallBack callBack);

        /**
         * 关联下载对应考场的线路和地图
         */
        void downloadLineInfoAndMap(String siteCode);

    }

    interface Model {

        /**
         * 从服务器获取已公开考规
         *
         * @param id       账号id
         * @param isPublic 是否已公开
         */
        void getSiteRuleFromServer(String id, boolean isPublic, CommonCallBack callBack);

        /**
         * 考规首页数据合并
         *
         * @param localSites  本地考规
         * @param serverSites 服务器已公开考规
         * @return
         */
        List<SiteEntity> siteRuleHomedataMerge(BaseRuleNewBean baseRuleNewBean, List<SiteEntity> localSites, List<SiteEntity> serverSites);


        /**
         * 获取基础模板数据下载地址
         *
         * @param baseVer
         * @param commonCallBack
         */
        void loadBaseDataDownLoadUrl(float baseVer, CommonCallBack commonCallBack);

        /**
         * 下载基础模板数据
         *
         * @param site
         * @param callBack
         */
        void downLoadBaseData(SiteEntity site, CommonCallBack callBack);

        /**
         * 根据用户id、考场 code、考规版本 查询修改数据
         *
         * @param userId
         * @param siteCode
         * @param ruleVer  考规版本
         * @param callBack
         */
        void downLoadModifyVal(int userId, String siteCode, float ruleVer, CommonCallBack callBack);

        /**
         * 查询最新基础模板数据信息
         */
        void getNewBaseRule(CommonCallBack callBack);

        /**
         * 根据考场获取线路
         *
         * @param siteCode  考场code
         * @param callBack
         * @param userId   用户id
         */
        void getLineInfoBySiteCode(String siteCode,int userId, CommonCallBack callBack);

        /**
         * 根据考场获取地图
         *
         * @param siteCode
         * @param callBack
         * @param userId
         */
        void getMapBySiteCode(String siteCode,int userId, CommonCallBack callBack);
    }

    interface View {

        /**
         * 显示考场规则
         */
        void showSiteRuleList(List<SiteEntity> siteList);

        /**
         * 刷新考场规则数据显示
         */
        void refreshSiteRuleList();

    }

}